/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.src.uniandes.ecos.tsp.creditscore.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author AndhyMao
 */
@Entity
@Table(name = "tbl_cliente_producto")
@NamedQueries({@NamedQuery(name = "ClienteProducto.findAll", query = "SELECT c FROM ClienteProducto c"), @NamedQuery(name = "ClienteProducto.findByCliCodigo", query = "SELECT c FROM ClienteProducto c WHERE c.clienteProductoPK.cliCodigo = :cliCodigo"), @NamedQuery(name = "ClienteProducto.findByProCodigo", query = "SELECT c FROM ClienteProducto c WHERE c.clienteProductoPK.proCodigo = :proCodigo"), @NamedQuery(name = "ClienteProducto.findByClpNumpro", query = "SELECT c FROM ClienteProducto c WHERE c.clienteProductoPK.clpNumpro = :clpNumpro"), @NamedQuery(name = "ClienteProducto.findByClpFecape", query = "SELECT c FROM ClienteProducto c WHERE c.clpFecape = :clpFecape"), @NamedQuery(name = "ClienteProducto.findByClpCupdis", query = "SELECT c FROM ClienteProducto c WHERE c.clpCupdis = :clpCupdis"), @NamedQuery(name = "ClienteProducto.findByClpCuputi", query = "SELECT c FROM ClienteProducto c WHERE c.clpCuputi = :clpCuputi"), @NamedQuery(name = "ClienteProducto.findByClpValapr", query = "SELECT c FROM ClienteProducto c WHERE c.clpValapr = :clpValapr"), @NamedQuery(name = "ClienteProducto.findByClpValdes", query = "SELECT c FROM ClienteProducto c WHERE c.clpValdes = :clpValdes"), @NamedQuery(name = "ClienteProducto.findByClpValaca", query = "SELECT c FROM ClienteProducto c WHERE c.clpValaca = :clpValaca"), @NamedQuery(name = "ClienteProducto.findByClpValain", query = "SELECT c FROM ClienteProducto c WHERE c.clpValain = :clpValain"), @NamedQuery(name = "ClienteProducto.findByClpSaldeu", query = "SELECT c FROM ClienteProducto c WHERE c.clpSaldeu = :clpSaldeu"), @NamedQuery(name = "ClienteProducto.findByClpMesamo", query = "SELECT c FROM ClienteProducto c WHERE c.clpMesamo = :clpMesamo"), @NamedQuery(name = "ClienteProducto.findByClpTasint", query = "SELECT c FROM ClienteProducto c WHERE c.clpTasint = :clpTasint")})
public class ClienteProducto implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected ClienteProductoPK clienteProductoPK;
    @Basic(optional = false)
    @Column(name = "clp_fecape")
    @Temporal(TemporalType.TIMESTAMP)
    private Date clpFecape;
    @Column(name = "clp_cupdis")
    private BigDecimal clpCupdis;
    @Column(name = "clp_cuputi")
    private BigDecimal clpCuputi;
    @Column(name = "clp_valapr")
    private BigDecimal clpValapr;
    @Column(name = "clp_valdes")
    private BigDecimal clpValdes;
    @Column(name = "clp_valaca")
    private BigDecimal clpValaca;
    @Column(name = "clp_valain")
    private BigDecimal clpValain;
    @Column(name = "clp_saldeu")
    private BigDecimal clpSaldeu;
    @Column(name = "clp_mesamo")
    private Short clpMesamo;
    @Column(name = "clp_tasint")
    private BigDecimal clpTasint;
    @JoinColumn(name = "cli_codigo", referencedColumnName = "cli_codigo", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Cliente cliente;
    @JoinColumn(name = "eob_codigo", referencedColumnName = "eob_codigo")
    @ManyToOne(optional = false)
    private EstadoObligacion eobCodigo;
    @JoinColumn(name = "pro_codigo", referencedColumnName = "pro_codigo", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Producto producto;
    @JoinColumn(name = "art_codigo", referencedColumnName = "art_codigo")
    @ManyToOne
    private TipoArticulo artCodigo;
    @OneToMany(mappedBy = "clienteProducto")
    private List<HistorialCrediticio> historialCrediticioList;

    public ClienteProducto() {
    }

    public ClienteProducto(ClienteProductoPK clienteProductoPK) {
        this.clienteProductoPK = clienteProductoPK;
    }

    public ClienteProducto(ClienteProductoPK clienteProductoPK, Date clpFecape) {
        this.clienteProductoPK = clienteProductoPK;
        this.clpFecape = clpFecape;
    }

    public ClienteProducto(int cliCodigo, int proCodigo, int clpNumpro) {
        this.clienteProductoPK = new ClienteProductoPK(cliCodigo, proCodigo, clpNumpro);
    }

    public ClienteProductoPK getClienteProductoPK() {
        return clienteProductoPK;
    }

    public void setClienteProductoPK(ClienteProductoPK clienteProductoPK) {
        this.clienteProductoPK = clienteProductoPK;
    }

    public Date getClpFecape() {
        return clpFecape;
    }

    public void setClpFecape(Date clpFecape) {
        this.clpFecape = clpFecape;
    }

    public BigDecimal getClpCupdis() {
        return clpCupdis;
    }

    public void setClpCupdis(BigDecimal clpCupdis) {
        this.clpCupdis = clpCupdis;
    }

    public BigDecimal getClpCuputi() {
        return clpCuputi;
    }

    public void setClpCuputi(BigDecimal clpCuputi) {
        this.clpCuputi = clpCuputi;
    }

    public BigDecimal getClpValapr() {
        return clpValapr;
    }

    public void setClpValapr(BigDecimal clpValapr) {
        this.clpValapr = clpValapr;
    }

    public BigDecimal getClpValdes() {
        return clpValdes;
    }

    public void setClpValdes(BigDecimal clpValdes) {
        this.clpValdes = clpValdes;
    }

    public BigDecimal getClpValaca() {
        return clpValaca;
    }

    public void setClpValaca(BigDecimal clpValaca) {
        this.clpValaca = clpValaca;
    }

    public BigDecimal getClpValain() {
        return clpValain;
    }

    public void setClpValain(BigDecimal clpValain) {
        this.clpValain = clpValain;
    }

    public BigDecimal getClpSaldeu() {
        return clpSaldeu;
    }

    public void setClpSaldeu(BigDecimal clpSaldeu) {
        this.clpSaldeu = clpSaldeu;
    }

    public Short getClpMesamo() {
        return clpMesamo;
    }

    public void setClpMesamo(Short clpMesamo) {
        this.clpMesamo = clpMesamo;
    }

    public BigDecimal getClpTasint() {
        return clpTasint;
    }

    public void setClpTasint(BigDecimal clpTasint) {
        this.clpTasint = clpTasint;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public EstadoObligacion getEobCodigo() {
        return eobCodigo;
    }

    public void setEobCodigo(EstadoObligacion eobCodigo) {
        this.eobCodigo = eobCodigo;
    }

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public TipoArticulo getArtCodigo() {
        return artCodigo;
    }

    public void setArtCodigo(TipoArticulo artCodigo) {
        this.artCodigo = artCodigo;
    }

    public List<HistorialCrediticio> getHistorialCrediticioList() {
        return historialCrediticioList;
    }

    public void setHistorialCrediticioList(List<HistorialCrediticio> historialCrediticioList) {
        this.historialCrediticioList = historialCrediticioList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (clienteProductoPK != null ? clienteProductoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ClienteProducto)) {
            return false;
        }
        ClienteProducto other = (ClienteProducto) object;
        if ((this.clienteProductoPK == null && other.clienteProductoPK != null) || (this.clienteProductoPK != null && !this.clienteProductoPK.equals(other.clienteProductoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.src.uniandes.ecos.tsp.creditscore.entity.ClienteProducto[clienteProductoPK=" + clienteProductoPK + "]";
    }

}
